#include "Navigation.h"

#include "NavigationManager.h"

using namespace Osp::App;
using namespace Osp::Base;
using namespace Osp::System;
using namespace Osp::Ui;
using namespace Osp::Ui::Controls;

Navigation::Navigation()
{
}

Navigation::~Navigation()
{
}

Application*
Navigation::CreateInstance(void)
{
	// Create the instance through the constructor.
	return new Navigation();
}

bool
Navigation::OnAppInitializing(AppRegistry& appRegistry)
{
	result r = E_SUCCESS;

	NavigationManager *pFormMgr = new NavigationManager();
	r = pFormMgr->Construct();
	if (IsFailed(r)) {
		return false;
	}
	GetAppFrame()->GetFrame()->AddControl(*pFormMgr);
	return true;
}

bool
Navigation::OnAppTerminating(AppRegistry& appRegistry, bool forcedTermination)
{
	// TODO:
	// Deallocate resources allocated by this application for termination.
	// The application's permanent data and context can be saved via appRegistry.
	return true;
}

void
Navigation::OnForeground(void)
{
	// TODO:
	// Start or resume drawing when the application is moved to the foreground.
}

void
Navigation::OnBackground(void)
{
	// TODO:
	// Stop drawing when the application is moved to the background.
}

void
Navigation::OnLowMemory(void)
{
	// TODO:
	// Free unused resources or close the application.
}

void
Navigation::OnBatteryLevelChanged(BatteryLevel batteryLevel)
{
	// TODO:
	// Handle any changes in battery level here.
	// Stop using multimedia features(camera, mp3 etc.) if the battery level is CRITICAL.
}

void
Navigation::OnScreenOn (void)
{
	// TODO:
	// Get the released resources or resume the operations that were paused or stopped in OnScreenOff().
}

void
Navigation::OnScreenOff (void)
{
	// TODO:
	//  Unless there is a strong reason to do otherwise, release resources (such as 3D, media, and sensors) to allow the device to enter the sleep mode to save the battery.
	// Invoking a lengthy asynchronous method within this listener method can be risky, because it is not guaranteed to invoke a callback before the device enters the sleep mode.
	// Similarly, do not perform lengthy operations in this listener method. Any operation must be a quick one.
}
